﻿Public Class actualizarCliente

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConsulta.Click
        Dim Cliente As New clsCliente()
        Dim ClienteDao As New daoCliente()
        If txtNroCli.Text.Trim.Length > 0 Then 'Si ingreso un codigo de cliente busco por ese codigo
            Cliente = ClienteDao.TraeCliente(Convert.ToInt32(txtNroCli.Text.Trim))
            If Cliente.Cli_Id > 0 Then
                AsignaCampos(Cliente)
            Else
                MessageBox.Show("No se encontró ningun cliente con codigo: " & txtNroCli.Text.Trim, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Else ''SI no hay codigo de articulo busco por DNI,  Nombre, Apellido o 
            If txtDNI.Text.Trim.Length > 0 Then
                Cliente = ClienteDao.TraeClienteDNI(txtDNI.Text.Trim.ToUpper)
                If Cliente.Cli_Id > 0 Then
                    AsignaCampos(Cliente)
                Else
                    MessageBox.Show("No se encontró ningun cliente con DNI: " & txtDNI.Text.Trim.ToUpper, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Else
                Dim ListaClientes As New List(Of clsCliente)
                If txtApe.Text.Trim.Length > 0 Then ''Si puso apellido busco por apellido
                    ListaClientes = ClienteDao.TraeClientesApellido(txtApe.Text.Trim.ToUpper)
                Else
                    If txtNom.Text.Trim.Length > 0 Then ''Si puso nombre busco por nombre
                        ListaClientes = ClienteDao.TraeClientesNombre(txtNom.Text.Trim.ToUpper)
                    Else ''Si puso nada traigo todos los clientes
                        ListaClientes = ClienteDao.TraeClientes()
                    End If
                End If
                If ListaClientes.Count > 1 Then ''Encontro mas de un articulo
                    TraeConsulta(ListaClientes)
                ElseIf ListaClientes.Count = 1 Then '' Encontro un solo articulo
                    Cliente = ListaClientes.Item(0)
                    AsignaCampos(Cliente)
                Else ''No encontro ningun articulo
                    MessageBox.Show("No se encontró ningun Cliente ", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If

            End If

        End If
        Cliente.Dispose()
        ClienteDao.Dispose()
    End Sub

    Private Sub actualizarCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'programar para cada txtbox la ayuda al ingreso
        LimpiarFormulario()
        CargarCmb()
    End Sub

    Private Sub txtNroCli_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNroCli.KeyPress
        validarInt(e)
    End Sub

    Private Sub txtDNI_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        validarInt(e)
    End Sub

    Private Sub txtNom_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        validarString(e)
    End Sub

    Private Sub txtApe_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        validarString(e)
    End Sub

    Private Sub txtNoDir_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        validarInt(e)
    End Sub

    Private Sub LimpiarFormulario()
        txtNroCli.Text = ""
        txtDNI.Text = ""
        txtApe.Text = ""
        txtNom.Text = ""
        txtDir.Text = ""
        txtNoDir.Text = ""
        txtPiso.Text = ""
        txtTel.Text = ""
        txtEmail.Text = ""
        txtCuit.Text = ""


        txtNroCli.Enabled = True
        txtDNI.Enabled = True
        txtApe.Enabled = True
        txtNom.Enabled = True
        txtDir.Enabled = False
        txtNoDir.Enabled = False
        txtPiso.Enabled = False
        txtTel.Enabled = False
        txtEmail.Enabled = False
        txtCuit.Enabled = False
        cmbTipoCli.Enabled = False

        btnActualiza.Enabled = False
        btnConsulta.Enabled = True
        btnLimpia.Enabled = True

    End Sub
    Private Sub CargarCmb()
        cmbTipoCli.Items.Add("Particular")
        cmbTipoCli.Items.Add("Empresa")
        cmbTipoCli.SelectedIndex = 0
    End Sub

    Private Sub btnLimpia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpia.Click
        LimpiarFormulario()
    End Sub
    Private Function Guardar() As Boolean
        Dim Cliente As New clsCliente()
        Dim ClienteDao As New daoCliente()

        Try
            Cliente.Cli_Id = Convert.ToInt32(txtNroCli.Text.Trim)
            Cliente.Dni = txtDNI.Text
            Cliente.Cuit = txtCuit.Text
            Cliente.Nombre = txtNom.Text
            Cliente.Apellido = txtApe.Text
            Cliente.Direccion = txtDir.Text
            Cliente.Altura = txtNoDir.Text
            Cliente.Depto = txtPiso.Text
            Cliente.Tel = txtTel.Text
            Cliente.Email = txtEmail.Text
            If cmbTipoCli.SelectedItem.ToString.Trim.ToUpper = "PARTICULAR" Then
                Cliente.Tipo = "P"
            Else
                Cliente.Tipo = "E"
            End If
            Cliente.Cod_Suc = Configuracion.Cod_Suc

            If ClienteDao.Modificar(Cliente) Then
                MessageBox.Show("El Cliente se a Actualizado Correctamente ", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return True
            Else
                MessageBox.Show("No se a actualizado el cliente. Comunicar a Sistemas", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return False
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        'Empiezo a asignar los datos al producto

        Return True
    End Function
    Private Sub AsignaCampos(ByVal Cliente As clsCliente)

        txtNroCli.Text = Cliente.Cli_Id.ToString.Trim
        txtDNI.Text = Cliente.Dni.Trim.ToUpper
        txtApe.Text = Cliente.Apellido.Trim.ToUpper
        txtNom.Text = Cliente.Nombre.Trim.ToUpper
        txtDir.Text = Cliente.Direccion.Trim.ToUpper
        txtNoDir.Text = Cliente.Altura.Trim.ToUpper
        txtPiso.Text = Cliente.Depto.Trim.ToUpper
        txtTel.Text = Cliente.Tel.Trim.ToUpper
        txtEmail.Text = Cliente.Email.Trim.ToUpper
        txtCuit.Text = Cliente.Cuit.Trim.Trim.ToUpper
        If Cliente.Tipo = "P" Then
            cmbTipoCli.SelectedIndex = 0
        Else
            cmbTipoCli.SelectedIndex = 1
        End If

        txtNroCli.Enabled = False
        txtDNI.Enabled = True
        txtApe.Enabled = True
        txtNom.Enabled = True
        txtDir.Enabled = True
        txtNoDir.Enabled = True
        txtPiso.Enabled = True
        txtTel.Enabled = True
        txtEmail.Enabled = True
        txtCuit.Enabled = True
        cmbTipoCli.Enabled = True

        btnActualiza.Enabled = True
        btnConsulta.Enabled = False
        btnLimpia.Enabled = True
    End Sub
    Private Sub TraeConsulta(ByVal ListaClientes As List(Of clsCliente))
        consultaCliente.ModoAcceso = "ACTUALIZA CLIENTE"
        consultaCliente.grdClientes.DataSource = ListaClientes

        consultaCliente.grdClientes.Columns(0).DataPropertyName = "Cli_Id"
        consultaCliente.grdClientes.Columns(1).DataPropertyName = "Apellido"
        consultaCliente.grdClientes.Columns(2).DataPropertyName = "Nombre"
        consultaCliente.grdClientes.Columns(3).DataPropertyName = "Dni"
        consultaCliente.grdClientes.Columns(4).DataPropertyName = "Email"
        consultaCliente.grdClientes.Columns(5).DataPropertyName = "Cuit"
        consultaCliente.grdClientes.Columns(6).DataPropertyName = "Direccion"
        consultaCliente.grdClientes.Columns(7).DataPropertyName = "Altura"
        consultaCliente.grdClientes.Columns(8).DataPropertyName = "Depto"
        consultaCliente.grdClientes.Columns(9).DataPropertyName = "Tel"

        consultaCliente.grdClientes.Columns(10).DataPropertyName = "Tipo"
        consultaCliente.grdClientes.Columns(11).DataPropertyName = "Cod_suc"

        consultaCliente.grdClientes.Columns(0).HeaderText = "Codigo"
        consultaCliente.grdClientes.Columns(1).HeaderText = "Apellido"
        consultaCliente.grdClientes.Columns(2).HeaderText = "Nombre"
        consultaCliente.grdClientes.Columns(3).HeaderText = "DNI"
        consultaCliente.grdClientes.Columns(4).HeaderText = "Email"
        consultaCliente.grdClientes.Columns(5).HeaderText = "CUIT/CUIL"
        consultaCliente.grdClientes.Columns(6).HeaderText = "Direccion"
        consultaCliente.grdClientes.Columns(7).HeaderText = "Nro."
        consultaCliente.grdClientes.Columns(8).HeaderText = "Depto."
        consultaCliente.grdClientes.Columns(9).HeaderText = "Telefono"

        consultaCliente.grdClientes.Columns(10).HeaderText = "Tipo"
        consultaCliente.grdClientes.Columns(11).HeaderText = "Codigo Sucursal"

        consultaCliente.grdClientes.Columns(10).Visible = False
        consultaCliente.grdClientes.Columns(11).Visible = False

        consultaCliente.MdiParent = Me.MdiParent
        Me.Enabled = False
        consultaCliente.Show()
    End Sub

    Private Sub btnActualiza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualiza.Click
        If Guardar() Then
            LimpiarFormulario()
        End If
    End Sub

End Class